python 高阶函数

对于函数式编程的精髓我还没有完全了解,但是高阶函数的编程方式确实很好。我感觉类似装饰器。

filter

filter( func , x ) x 列表中的元素一次代入 func , 如果结果为真 True,返回这个元素。 如果函数 func 有两个或更多的输入参数,filter( func, x , y , ... ),将 x , y ,

... 的每一个列表的第i个分别代入。
def func(x):
    return x % 3 == 1

a = range(10)
print a
print filter(func,a)
>> [0,1,2,3,4,5,6,7,8,9]
>> [1,4,7]

map

map( func , x ) x 列表中每个元素代入 func,结果以类表形式返回。故 func 应该表示的是某种运算。

def func(x):
    return x*x

a = range(10)
print a
print map(func,a)
>> [0,1,2,3,4,5,6,7,8,9]
>> [0,1,4,9,16,25,36,49,64,81]

reduce

reduce( func ,x ) 这个就有点不好陈述了,看例子吧。

def func(x,y):
    return x+y

a = range(10)   
print a
print reduce(func,a)
>> [0,1,2,3,4,5,6,7,8,9]
>> 45

首先取出 x,y=0,1; func 返回 3 , 然后取出2,并使得 x,y=3,2;取得结果后,再将结果与列表中的数据一同作为函数输入,重新代入。

lambda

这个知道的就早些,在简单的看了 scheme 后,就更加熟悉了。